跳到主要内容

配置示例应用程序

本节提供了一个灵活的工作流程,描述如何使用 Ubuntu 上的 Qualcomm® 智能多媒体产品 (QIMP) SDK 运行和定制高级多媒体和 AI 示例应用程序。开发人员可以使用 JSON 配置文件定义输入/输出源、运行时目标和模型精度,从而实现跨 CPU、GPU 和 DSP 的无缝评估。该方案支持 TFLite、QNN 和 SNPE 等框架并与 AI Hub 集成,非常适合构建和优化针对特定用例的边缘 AI 管道。

使用 QIMP SDK 运行高级多媒体和 AI 示例应用程序,开发人员可以:

  • 跨异构计算目标(CPU、GPU、DSP)对AI 工作负载进行原型设计和验证,帮助团队为其用例选择最高效的运行时。
  • 使用基于 JSON 的配置自定义应用程序行为,从而可以精确控制输入/输出源、模型类型和运行时参数。
  • 利用 AI Hub 的预集成模型和 TFLite、QNN、SNPE 等支持的框架来加速开发和部署
  • 对性能进行基准测试并优化资源使用,对于计算和功率预算有限的嵌入式系统和边缘设备至关重要。
  • 对模型、标签及媒体资源采用标准化的脚本与目录结构,由此确保跨高通平台的兼容性与可复现性

前提条件

  • Ubuntu 操作系统 已刷入。
  • 具有适当权限的终端访问
  • 基本熟悉JSON 配置文件 和运行时环境变量。
  • 访问 AI Hub 进行模型选择和导出。创建 AI Hub 账户
  • 如果您之前没有安装过 PPA 包,请按照以下步骤进行安装。
      git clone -b ubuntu_setup --single-branch https://github.com/rubikpi-ai/rubikpi-script.git 
    cd rubikpi-script
    ./install_ppa_pkgs.sh

使用以下步骤配置脚本并运行模型

1️⃣ 下载并运行脚本。此脚本将自动获取运行示例应用程序所需的所有包,包括:

  • 模型
  • 标签
  • 媒体文件
cd /home/ubuntu 
curl -L -O https://raw.githubusercontent.com/quic/sample-apps-for-qualcomm-linux/refs/heads/main/download_artifacts.sh
sudo chmod +x download_artifacts.sh
sudo ./download_artifacts.sh -v GA1.5-rel -c QCS6490

说明

  • 使用-v参数来定义您想要使用的版本(例如,GA1.5-rel)。
  • 使用-c参数来定义您的设备正在使用的芯片组(例如,QCS6490)。

2️⃣验证模型/标签/媒体文件
在启动任何示例应用程序之前,请确保所需文件已到位。

检查以下目录:

  • 模型文件/etc/models/
  • 标签文件/etc/labels/
  • 媒体文件/etc/media/
备注

这些文件对于 AI 示例应用程序的正常运行至关重要。如果缺失,请重新运行构建产物下载脚本。

3️⃣ 更新 JSON 配置文件
要运行具有特定功能的示例应用程序,需要一个正确配置的 JSON 文件。

所需操作

  • 根据您的模型配置要求更新所需的JSON配置文件。
  • 更新e.g. - /etc/configs/config_classification.json处的文件以匹配您的用例:

配置参数

Details

更新您的 JSON 配置文件,添加以下关键参数:

  • 输入源
    • Camera
    • File (Filesrc)
    • RTSP Stream
  • 输出源
    • Waylandsink
    • Filesink
    • RTSP Stream
  • 运行时选项
    • CPU
    • GPU
    • DSP
  • 精度
    • INT8 / INT16
    • W8A8 / W8A16
    • FP32
  • 模型类型
    • AI Hub选择可用模型
  • 标签
    • 选择正确的标签文件

示例应用程序配置矩阵

示例应用程序名称详情AI Hub 模型类型运行时使用的脚本
gst-ai-classification图像分类MobileNet-v2, ResNet101, GoogLeNet, MobileNet-v3-Large, ResNet18, ResNeXt50, ResNeXt101, SqueezeNet, WideResNet50, ShufflenetCPU, GPU, DSP更新 JSON
gst-ai-object-detection目标检测Yolox, Yolov7, Yolov8-Detection (手动导出)CPU, GPU, DSP从 AI Hub 导出模型;更新 Yolox/Yolov7 脚本 – 更新JSON
gst-ai-pose-detection姿态检测hrnet_poseCPU, GPU, DSPTFLite 默认运行;更新精度/运行时脚本 – 更新 JSON
gst-ai-segmentation图像分割FFNet-40S, FFNet-54S, FFNet-78SCPU, GPU, DSP更新 JSON
gst-ai-superresolution视频超分辨率quicksrnetsmall, QuickSRNetMedium, QuickSRNetLarge, XLSRCPU, GPU, DSP更新 JSON
gst-ai-multistream-batch-inference多流批量推理YoloV8-Detection (批大小为 4), DeeplabV3 (批大小为 4)CPU, GPU, DSP从 AI Hub 导出模型;更新脚本 – 更新 JSON
gst-ai-face-detection人脸检测face_det_liteCPU, GPU, DSP更新 JSON
gst-ai-face-recognition人脸识别face_det_lite, face_attrib_net, facemap_3dmmCPU, GPU, DSP需要进行人脸注册;否则输出为“识别出未知人脸”
gst-ai-metadata-parser-example元数据解析Yolov8-DetectionCPU, GPU, DSP从 AI Hub 导出模型
gst-ai-usb-camera-appAI USB 摄像头Yolov8-DetectionCPU, GPU, DSP从 AI Hub 导出模型
gst-ai-parallel-inference并行推理Yolov8-Detection, Deeplab, Hrnet, Inceptionv3CPU, GPU, DSP从 AI Hub 导出模型;为其他模型 更新 JSON
gst-ai-daisychain-detection-classification菊花链检测与分类Inceptionv3 + YoloV8CPU, GPU, DSP从 AI Hub 导出模型;为其他模型 更新 JSON
gst-ai-audio-classification音频分类Inceptionv3 + YoloV8CPU, GPU, DSP从 AI Hub 导出模型;为其他模型 更新 JSON
gst-ai-smartcodec-exampleAI 智能 codecInceptionv3 + YoloV8CPU, GPU, DSP从 AI Hub 导出模型;为其他模型 更新 JSON

使用 SSH 或 SBC 终端启动示例应用程序。

备注

如果终端处于root状态,则需要设置以下环境。但对于 ubuntu 用户来说无需此操作。

export XDG\_RUNTIME\_DIR=/run/user/$(id -u ubuntu)

示例

对于 AI 分类示例应用程序,打开 /etc/configs/config_classification.json 配置文件并更新默认标签文件。

"labels": "/etc/labels/classification.labels"
改为
"labels": "/etc/labels/imagenet_labels.txt"

运行 AI 分类示例应用程序。

gst-ai-classification

要显示可用的帮助选项,请在 SSH shell 中运行以下命令:

gst-ai-classification -h

CTRL + C可停止用例。

参考文档:

要进一步探索示例应用程序,请参阅 Qualcomm Intelligent Multimedia SDK (IM SDK) 参考。Qualcomm Intelligent Multimedia SDK (IM SDK) Reference